#ifndef ACTION_MANAGER_H
#define ACTION_MANAGER_H

#include <iostream>
#include <stack>
#include <list>
#include <string>
#include "Action.h"
#include "User.h"

using namespace std;
//@author U095387X
class ActionManager{

	//Attributes
private:
	stack<Action> _ActionStack;
	list<Expense> _ExpenseList;
	list<Income> _IncomeList;
	list<Wish> _WishList;
	list<Loan> _LoanList;
	User *_curUser;

	//Methods
public:
	void initialize(User *curUser);
	Action getLastAction();
	void addIncomeAction(Income newIncome, e_action action);
	void addExpenseAction(Expense newExpense, e_action action);
	void addWishAction(Wish newWish, e_action action);
	void addLoanAction(Loan newLoan, e_action action);
	int getNumberOfLastActions();
	void undoAction();
	string LastActionToString();

};

#endif